// 管理搜索模块的数据
import { reqSearch } from '@/api'

const state = {
  // 搜索出的商品列表相关数据的对象
  productList: {}
}

const mutations = {
  // 接收保存商品列表相关数据对象
  RECEIVE_PRODUCT_LIST (state, productList) {
    state.productList = productList
  }
}

const actions = {
  // 根据指定的搜索条件,异步获取商品列表的 action
  async getProductList ({ commit }, searchParams) {
    // 对 searchParams 做浅拷贝,因为不想删除 search 组件中的 options 中的属性
    searchParams = { ...searchParams }
    // 删除 searchParams 中的空串或空数组
    Object.keys(searchParams).forEach(key => {
      if (searchParams[key] === '' || (Array.isArray(searchParams[key]) && searchParams[key].length === 0)) {
        delete searchParams[key]
      }
    })

    const result = await reqSearch(searchParams)
    if (result.code === 200) {
      const productList = result.data
      commit('RECEIVE_PRODUCT_LIST', productList)
    }
  }
}

const getters = {
  // 商品分页列表
  goodsList (state) {
    return state.productList.goodsList || []
  },
  // 商品品牌列表
  trademarkList (state) {
    return state.productList.trademarkList || []
  },
  // 属性列表
  attrsList (state) {
    return state.productList.attrsList || []
  },
  // 总数量
  total (state) {
    return state.productList.total || 0
  }
}

export default {
  state,
  mutations,
  actions,
  getters
}

